로그 이력에 AMS로그 포함 패치 방법
기존에는 문서보안의 로그만 조회가 가능하였으나 승인반출시스템에서 해제한 로그도 포함이 필요함에 따라 AMS로그도 추가하도록 개발되어 패치 방법을 가이드 합니다.
1. ElasticSearch 패치
1.1. softcamp-ams-logs인덱스 만들기
softcamp-ams-logs-setting.json 파일 본문 내용
OS마다 스크립트가 다르기 때문에 주의 필요
- Linux
- Windows
{
"settings": {
"index": {
"number_of_shards": "4",
"number_of_replicas": "0",
"analysis": {
"analyzer": {
"korean": {
"type": "custom",
"tokenizer": "seunjeon_default_tokenizer",
"filter": ["trim", "lowercase", "stop", "kstem"]
},
"korean_filename": {
"type": "custom",
"tokenizer": "seunjeon_default_tokenizer",
"filter": ["trim", "lowercase", "stop", "kstem", "filename"]
}
},
"tokenizer": {
"seunjeon_default_tokenizer": {
"type": "seunjeon_tokenizer",
"user_words": [
"낄끼+빠빠,-100",
"c\\+\\+",
"어그로",
"버카충",
"abc마트"
],
"index_eojeol": "false"
}
},
"filter": {
"filename": {
"type": "pattern_capture",
"preserve_original" : 1,
"patterns" : ["([^\\.^_]+)", "\\.(.+)", "_(.+)"]
}
}
}
}
},
"mappings": {
"amslog_info": {
"properties": {
"NUM": {
"type": "keyword"
},
"USER_ID": {
"type": "keyword"
},
"USER_NAME": {
"type": "keyword"
},
"WRITE_DATE": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss"
},
"APPROVAL_ID": {
"type": "keyword"
},
"APPROVAL_NAME": {
"type": "keyword"
},
"APPROVAL_TIME": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss"
},
"APPROVAL_TYPE": {
"type": "integer"
},
"APPROVL_TYPE_NAME": {
"type": "text",
"analyzer": "korean"
},
"TITLE": {
"type": "text",
"analyzer": "korean"
},
"DESTINATION": {
"type": "text",
"analyzer": "korean"
},
"CONTENT": {
"type": "text",
"analyzer": "korean"
},
"ENCRYPT_TYPE": {
"type": "keyword"
},
"ENCRYPT_TYPE_NAME": {
"type": "text",
"analyzer": "korean"
},
"ENCRYPT_POLICY": {
"type": "text"
},
"DOWNLOAD_ENDDATE": {
"type": "integer"
},
"DOWNLOAD_COUNT": {
"type": "integer"
},
"FILECOUNT": {
"type": "integer"
},
"UPLOADFILE_NAME": {
"type": "text",
"analyzer": "korean_filename"
},
"UPLOADFILE_SIZE": {
"type": "long"
},
"CONFORM_CONTENT": {
"type": "text",
"analyzer": "korean"
},
"REJECT_CONTENT": {
"type": "text",
"analyzer": "korean"
},
"APPROVAL_STATE": {
"type": "text"
},
"TOPGROUP_ID": {
"type": "text"
},
"TOPGROUP_NAME": {
"type": "text"
},
"APPROVALSTEAD_NUM": {
"type": "text"
},
"APPROVALSTEAD_ID": {
"type": "text"
},
"APPROVALSTEAD_NAME": {
"type": "text"
},
"APPR_INFO_SEND": {
"type": "text"
},
"LATEAPPROVAL_FLAG": {
"type": "text"
},
"VIEWCOUNT": {
"type": "integer"
},
"NOTIFYINFO": {
"type": "text"
},
"APPROVAL_STEP": {
"type": "integer"
},
"APPROVAL_LASTSTEP": {
"type": "integer"
},
"PRIVATEDATA_COUNT": {
"type": "integer"
},
"EXTENDAPPROVAL_TYPE": {
"type": "text"
},
"EXTENDAPPROVAL_PERIOD": {
"type": "integer"
},
"EXTENDAPPROVAL_EXPIREDATE": {
"type": "text"
},
"EXTENDAPPROVAL_CANCEL": {
"type": "text"
},
"SPARE1": {
"type": "text"
},
"SPARE2": {
"type": "text"
},
"SPARE3": {
"type": "text"
},
"SPARE4": {
"type": "text"
},
"SPARE5": {
"type": "text"
},
"SENDMAIL_USE": {
"type": "text"
},
"EXTENDAPPROVAL_STARTDATE": {
"type": "text"
},
"GROUP_ID": {
"type": "text"
},
"GROUP_NAME": {
"type": "text"
},
"EXTDRM_USE": {
"type": "text"
},
"GROUP_PATH": {
"type": "text",
"analyzer": "korean"
},
"USERACCESS_IP": {
"type": "text"
},
"EXTERNAL_LOGID": {
"type": "text"
},
"EXTRA_INFO": {
"type": "text"
}
}
}
}
}
{
"settings": {
"index": {
"number_of_shards": "4",
"number_of_replicas": "0",
"analysis": {
"analyzer": {
"korean": {
"type": "custom",
"tokenizer": "mecab_ko_standard_tokenizer",
"filter": ["trim", "lowercase", "stop", "kstem"]
},
"korean_filename": {
"type": "custom",
"tokenizer": "mecab_ko_standard_tokenizer",
"filter": ["trim", "lowercase", "stop", "kstem", "filename"]
}
},
"tokenizer": {
"mecab_ko_standard_tokenizer": {
"type": "mecab_ko_standard_tokenizer",
"mecab_args": "-d mecab/mecab-ko-dic"
}
},
"filter": {
"filename": {
"type": "pattern_capture",
"preserve_original" : 1,
"patterns" : ["([^\\.^_]+)", "\\.(.+)", "_(.+)"]
}
}
}
}
},
"mappings": {
"amslog_info": {
"properties": {
"NUM": {
"type": "keyword"
},
"USER_ID": {
"type": "keyword"
},
"USER_NAME": {
"type": "keyword"
},
"WRITE_DATE": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss"
},
"APPROVAL_ID": {
"type": "keyword"
},
"APPROVAL_NAME": {
"type": "keyword"
},
"APPROVAL_TIME": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss"
},
"APPROVAL_TYPE": {
"type": "integer"
},
"APPROVL_TYPE_NAME": {
"type": "text",
"analyzer": "korean"
},
"TITLE": {
"type": "text",
"analyzer": "korean"
},
"DESTINATION": {
"type": "text",
"analyzer": "korean"
},
"CONTENT": {
"type": "text",
"analyzer": "korean"
},
"ENCRYPT_TYPE": {
"type": "keyword"
},
"ENCRYPT_TYPE_NAME": {
"type": "text",
"analyzer": "korean"
},
"ENCRYPT_POLICY": {
"type": "text"
},
"DOWNLOAD_ENDDATE": {
"type": "integer"
},
"DOWNLOAD_COUNT": {
"type": "integer"
},
"FILECOUNT": {
"type": "integer"
},
"UPLOADFILE_NAME": {
"type": "text",
"analyzer": "korean_filename"
},
"UPLOADFILE_SIZE": {
"type": "long"
},
"CONFORM_CONTENT": {
"type": "text",
"analyzer": "korean"
},
"REJECT_CONTENT": {
"type": "text",
"analyzer": "korean"
},
"APPROVAL_STATE": {
"type": "text"
},
"TOPGROUP_ID": {
"type": "text"
},
"TOPGROUP_NAME": {
"type": "text"
},
"APPROVALSTEAD_NUM": {
"type": "text"
},
"APPROVALSTEAD_ID": {
"type": "text"
},
"APPROVALSTEAD_NAME": {
"type": "text"
},
"APPR_INFO_SEND": {
"type": "text"
},
"LATEAPPROVAL_FLAG": {
"type": "text"
},
"VIEWCOUNT": {
"type": "integer"
},
"NOTIFYINFO": {
"type": "text"
},
"APPROVAL_STEP": {
"type": "integer"
},
"APPROVAL_LASTSTEP": {
"type": "integer"
},
"PRIVATEDATA_COUNT": {
"type": "integer"
},
"EXTENDAPPROVAL_TYPE": {
"type": "text"
},
"EXTENDAPPROVAL_PERIOD": {
"type": "integer"
},
"EXTENDAPPROVAL_EXPIREDATE": {
"type": "text"
},
"EXTENDAPPROVAL_CANCEL": {
"type": "text"
},
"SPARE1": {
"type": "text"
},
"SPARE2": {
"type": "text"
},
"SPARE3": {
"type": "text"
},
"SPARE4": {
"type": "text"
},
"SPARE5": {
"type": "text"
},
"SENDMAIL_USE": {
"type": "text"
},
"EXTENDAPPROVAL_STARTDATE": {
"type": "text"
},
"GROUP_ID": {
"type": "text"
},
"GROUP_NAME": {
"type": "text"
},
"EXTDRM_USE": {
"type": "text"
},
"GROUP_PATH": {
"type": "text",
"analyzer": "korean"
},
"USERACCESS_IP": {
"type": "text"
},
"EXTERNAL_LOGID": {
"type": "text"
},
"EXTRA_INFO": {
"type": "text"
}
}
}
}
}
- curl명령
- postman툴
1.1.1 softcamp-ams-logs-setting.json 파일 본문 내용을 복사하여 노트패드등에 붙여넣기 한다.(저장시 인코딩은 UTF-8로 한다)
1.1.2 생성된 softcamp-ams-logs-setting.json 파일을 서버에 업로드 한다.
1.1.3 업로드된 디렉토리로 이동하여 명령어를 실행한다.
curl -XPUT localhost:9200/softcamp-ams-logs?pretty=true -d @softcamp-ams-logs-setting.json -H "Content-Type:application/json"
1.1.4 결과를 확인한다.
{
"acknowledged" : true,
"shards_acknowledged" : true
}
1.1.1 POSTMAN을 실행한다.
1.1.2 매소드: PUT , URL : http://고객사IP:9200/softcamp-ams-logs 로 설정한다.
1.1.3 Body탭에서 raw선택 , 형식은 JSON으로 설정 한다.
1.1.4 softcamp-ams-logs-setting.json 파일 본문 내용을 복사하고 Send 버튼을 클릭한다.
[상세 그림 참고]
)
1.2. ams인덱스 정보 추가
1.2.1. LogViewer/data/logViewer/conf/elasticSearch.properties 파일 편집
1.2.2. es.types.indies의 항목 맨 뒤에 ams인덱스 정보 추가
|amslog_info^softcamp-ams-logs
최종 값 : es.types.indies = dslog_info^softcamp-ds-logs-|userlog_info^softcamp-user-logs-|maxeon_log^softcamp-mx-logs|mx_folder_status^softcamp-mx-folder-size|managerlog_info^softcamp-manager-logs-*|amslog_info^softcamp-ams-logs
2. LogStash 파일 및 설정 추가
2.1. 설치경로/LogViewer/app/ELK/logstash-5.5.0/last_run/ 경로로 이동한다.
2.2. logstash_jdbc_amslog_last_run.txt 파일을 생성 한다.
vi logstash_jdbc_amslog_last_run.txt
--- '2020-01-01 00:00:00'